/******************************************************************************
** 公司名称：天津柯迪斯科技有限公司
** 版权信息：
** 文件名称： bsp_spi_flash.c
** 模块名称： 通用SPI Flash驱动模块
** 版 本 号： V1.0
** 作    者： 蒲磊
** 
** 修改记录： 版本     修改人      时间         修改内容
**
******************************************************************************/

#ifndef _BSP_SPI_FLASH_H
#define _BSP_SPI_FLASH_H

/******************************************************************************
* 头文件
******************************************************************************/
#include "bsp.h"
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
/******************************************************************************
* 宏定义 ('#define')                             
******************************************************************************/
#define SF_MAX_PAGE_SIZE	(4 * 1024)

/******************************************************************************
* 类型定义 ('typedef')                                         
******************************************************************************/
enum
{
	SST25VF016B_ID = 0xBF2541,
	MX25L1606E_ID  = 0xC22015,
	W25Q64BV_ID    = 0xEF4017
};

typedef struct
{
	uint32_t ChipID;		/* 芯片ID */
	char ChipName[16];		/* 芯片型号字符串，主要用于显示 */
	uint32_t TotalSize;		/* 总容量 */
	uint16_t PageSize;		/* 页面大小 */
}SFLASH_T;
/******************************************************************************
* 全局变量声明 
******************************************************************************/

/******************************************************************************
* 函数声明 
******************************************************************************/
void vBsp_InitSFlash(void);
uint32_t sf_ReadID(void);
void sf_EraseChip(void);
void sf_EraseSector(uint32_t _uiSectorAddr);
void sf_PageWrite(uint8_t * _pBuf, uint32_t _uiWriteAddr, uint16_t _usSize);
uint8_t sf_WriteBuffer(uint8_t* _pBuf, uint32_t _uiWriteAddr, uint16_t _usWriteSize);
void sf_ReadBuffer(uint8_t * _pBuf, uint32_t _uiReadAddr, uint32_t _uiSize);
void sf_ReadInfo(void);

extern SFLASH_T g_tSF;

#endif


